package it.asvp.asvp_portal.service.services;

import it.asvp.asvp_portal.asvp_util.enumerative.RoleName;
import it.asvp.asvp_portal.data.entity.member.MemberAccount;
import it.asvp.asvp_portal.data.entity.member.Role;

import java.util.Set;


public interface MemberAccountService {

	public boolean isMember(Long idAccount);
		
		public boolean isCouncilor(Long idAccount);
		
		public boolean isPresident(Long idAccount);

		public boolean isAdmin(Long idAccount);
		
		public Set<Role> getRoles(Long idAccount) throws Exception;
		
		public MemberAccount createAccount(Long idCurrentAccount,MemberAccount transientMemberAccount,RoleName roleName) throws Exception;
		
		public MemberAccount createAccountByEmail(Long idCurrentAccount,MemberAccount transientMemberAccount,String email,RoleName roleName) throws Exception;

		public void updateAccount(Long idCurrentAccount,Long oldAccountId,MemberAccount newAccount) throws Exception;

		
		public void removeAccountRole(Long idCurrentAccount,Long idAccount,RoleName roleName) throws Exception;

		
		public void deleteAccount(Long idCurrentAccount,Long idAccountToDelete) throws Exception;

		
		public MemberAccount validateAccount(MemberAccount transientMemberAccount) throws Exception;

		
		public MemberAccount getAccountByMemberId(Long memberId) throws Exception;

}
